﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;
using Cotizav.PRESENTACION.Base;
using Cotizav.PRESENTACION.DialogBox;


namespace Cotizav.PRESENTACION.Personas.Vendedor
{
    public partial class IURegistroVendedor : UserControl
    {
        CtrlCargo ctCargo;

        CtrlVendedor ctVendedores;


        public IURegistroVendedor()
        {
            InitializeComponent();
            ctVendedores = new CtrlVendedor();
            ctCargo = new CtrlCargo();
        }

        internal void clearPanel()
        {
            txtNombre.ResetText();
            txtEmail.ResetText();
            txtCodEmpleado.ResetText();
            txtTelefono.ResetText();
            txtCelular.ResetText();
            txtNextel.ResetText();
            txtFax.ResetText();
            txtAnexo.ResetText();
            txtRpc.ResetText();
            txtRpm.ResetText();
            cmbCargo.SelectedIndex = -1;
        }

        internal void setEditablePanel()
        {
            txtNombre.ReadOnly = false;
            txtEmail.ReadOnly = false;
            txtCodEmpleado.ReadOnly = false;
            txtTelefono.ReadOnly = false;
            txtCelular.ReadOnly = false;
            txtNextel.ReadOnly = false;
            txtFax.ReadOnly = false;
            txtAnexo.ReadOnly = false;
            txtRpc.ReadOnly = false;
            txtRpm.ReadOnly = false;

            cmbCargo.DropDownStyle = ComboBoxStyle.DropDownList; cmbCargo.Enabled = true;
        }

        internal void enableModifyPanel()
        {
            RegistroVendedor regVendedor = this.ParentForm as RegistroVendedor;
            IURegistro iureg = regVendedor.Controls["panelRegistro"] as IURegistro;

            bool objectSelected = iureg.isObjectSelectedinGrid();

            if (objectSelected)
            {
                setEditablePanel();
            }
        }

        internal void eliminarVendedor()
        {
            if (MessageBox.Show(this.ParentForm, "¿Confirma eliminar el Vendedor y todo su contenido?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
            {
                string idVendedor = groupDatos.Tag.ToString();

                if (idVendedor != null)
                {
                    VENDEDOR ven = new VENDEDOR() { idVendedor = idVendedor };
                    DialogResult result = ctVendedores.eliminarVendedor(ven);

                    if (result == DialogResult.OK)
                    {
                        MessageBox.Show("Vendedor eliminado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                    }
                } 
            }
            //
            clearPanel();
        
        }

        internal void registrarVendedor()
        {
            if (!string.IsNullOrWhiteSpace(txtNombre.Text))
            {
                if (!string.IsNullOrWhiteSpace(txtEmail.Text))
                {
                    if (cmbCargo.SelectedIndex >= 0)
                    {
                        List<VENDEDOR> busquedaNombre = ctVendedores.buscarVendedorExacto("nombre", txtNombre.Text.Trim());
                        List<VENDEDOR> busquedaCodigoEmpleado = ctVendedores.buscarVendedorExacto("codigoEmpleado", txtCodEmpleado.Text.Trim());

                        if (busquedaNombre.Count == 0)
                        {
                            if (busquedaCodigoEmpleado.Count == 0)
                            {
                                VENDEDOR seller = new VENDEDOR()
                                {
                                    nombre = txtNombre.Text,
                                    codigoEmpleado = txtCodEmpleado.Text,
                                    email = txtEmail.Text,
                                    idCargo = cmbCargo.SelectedValue.ToString(),
                                    telefono = txtTelefono.Text,
                                    nextel = txtNextel.Text,
                                    anexo = txtAnexo.Text,
                                    celular = txtCelular.Text,
                                    rpc = txtRpc.Text,
                                    rpm = txtRpm.Text,
                                    fax = txtFax.Text,
                                    eliminado = 0
                                };

                                DialogResult result = ctVendedores.registrarVendedor(seller);

                                if (result == DialogResult.OK)
                                {
                                    MessageBox.Show("Vendedor registrado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                    setReadOnlyPanel();
                                }
                            }
                            else
                            {
                                //Informar que ya se encuentra registrado
                                DialogMessageBoxList dialogBox = new DialogMessageBoxList("Cotizav", "El vendedor ya se encuentra registrado en el sistema", busquedaCodigoEmpleado, "Vendedor");
                                dialogBox.ShowDialog(this);
                            }
                        }
                        else
                        {
                            DialogMessageBoxList dialogBox = new DialogMessageBoxList("Cotizav", "El vendedor ya se encuentra registrado en el sistema", busquedaNombre, "Vendedor");
                            dialogBox.ShowDialog(this);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ingrese el cargo del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show("Seleccione el cargo del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Seleccione el nombre del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        internal void modificarVendedor()
        {
            if (!string.IsNullOrWhiteSpace(txtNombre.Text))
            {
                if (!string.IsNullOrWhiteSpace(txtEmail.Text))
                {
                    if (cmbCargo.SelectedIndex >= 0)
                    {
                        VENDEDOR seller = new VENDEDOR()
                        {
                            idVendedor = groupDatos.Tag.ToString(),
                            nombre = txtNombre.Text,
                            codigoEmpleado = txtCodEmpleado.Text,
                            email = txtEmail.Text,
                            idCargo = cmbCargo.SelectedValue.ToString(),
                            telefono = txtTelefono.Text,
                            anexo = txtAnexo.Text,
                            nextel= txtNextel.Text,
                            celular = txtCelular.Text,
                            rpc = txtRpc.Text,
                            rpm = txtRpm.Text,
                            fax = txtFax.Text,
                            eliminado = 0
                        };

                        DialogResult result = ctVendedores.modificarVendedor(seller);

                        if (result == DialogResult.OK)
                        { 
                            MessageBox.Show("Vendedor modificado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            
                            //procede con la actualizacion y limpieza de controles
                            setReadOnlyPanel();                                                
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ingrese el cargo del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show("Seleccione el cargo del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Seleccione el nombre del vendedor", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }


        internal void setReadOnlyPanel()
        {
            txtNombre.ResetText(); txtNombre.ReadOnly = true;
            txtCodEmpleado.ResetText(); txtCodEmpleado.ReadOnly = true;
            txtEmail.ResetText(); txtEmail.ReadOnly = true;
            txtTelefono.ResetText(); txtTelefono.ReadOnly = true;
            txtAnexo.ResetText(); txtAnexo.ReadOnly = true;
            txtNextel.ResetText(); txtNextel.ReadOnly = true;
            txtCelular.ResetText(); txtCelular.ReadOnly = true;
            txtRpc.ResetText(); txtRpc.ReadOnly = true;
            txtRpm.ResetText(); txtRpm.ReadOnly = true;
            txtFax.ResetText(); txtFax.ReadOnly = true;
            cmbCargo.DropDownStyle = ComboBoxStyle.Simple; cmbCargo.Enabled = false; cmbCargo.SelectedIndex = -1;
             
        }

        private void IURegistroVendedor_Load(object sender, EventArgs e)
        {
            //cargar cargo
            cmbCargo.DataSource = ctCargo.getListCargos();
            cmbCargo.DisplayMember = "nombreCargo";
            cmbCargo.ValueMember = "idCargo";

            setReadOnlyPanel();
        }

        internal void mostrarVendedor(string idVendedor)
        {
            VENDEDOR vndor = ctVendedores.getVendedor(idVendedor);

            //coloco la informacion en el panel
            //coloco el id en el panel
            groupDatos.Tag = vndor.idVendedor;
            txtAnexo.Text = vndor.anexo;
            txtCelular.Text = vndor.celular;
            txtCodEmpleado.Text = vndor.codigoEmpleado;
            txtEmail.Text = vndor.email;
            txtFax.Text = vndor.fax;
            txtNextel.Text = vndor.nextel;
            txtNombre.Text = vndor.nombre;
            txtRpc.Text = vndor.rpc;
            txtRpm.Text = vndor.rpm;
            txtTelefono.Text = vndor.telefono;

            cmbCargo.SelectedIndex = cmbCargo.Items.Cast<CARGO>().SingleOrDefault(x => x.idCargo == vndor.idCargo) != null ? cmbCargo.Items.IndexOf(cmbCargo.Items.Cast<CARGO>().SingleOrDefault(x => x.idCargo == vndor.idCargo)) : -1;
       
            txtAnexo.Text = vndor.anexo;
            txtCelular.Text = vndor.celular;
            txtCodEmpleado.Text = vndor.codigoEmpleado;
            txtEmail.Text = vndor.email;
            txtFax.Text = vndor.fax;
            txtNextel.Text = vndor.nextel;
            txtNombre.Text = vndor.nombre;
            txtRpc.Text = vndor.rpc;
            txtRpm.Text = vndor.rpm;
            txtTelefono.Text = vndor.telefono;                       

        }

        internal bool cancelarRegistro()
        {
            bool result = false;

            if (MessageBox.Show(this.ParentForm, "¿Desea cancelar el registro de vendedor?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
            {
                this.clearPanel();
                this.setReadOnlyPanel();

                result = true;
            }
            else
            {
                result = false;
            }

            return result;
        }

        internal bool cancelarActualizacion()
        {
            bool result = false;

            if (MessageBox.Show(this.ParentForm, "¿Desea cancelar la actualización de vendedor?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
            {
                this.clearPanel();
                this.setReadOnlyPanel();

                result = true;
            }
            else
            {
                result = false;
            }

            return result;
        }

        private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '(')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == ')')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '-')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCelular_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '-')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '(')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == ')')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtNextel_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '*')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtFax_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '-')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '(')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == ')')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtAnexo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtRpc_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '(')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == ')')
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '-')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtRpm_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (e.KeyChar == '#')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

    }
}

